/*
 * @Description: 封装生成UUID方法
 * @Author: chenzhifeng
 * @Date: 2021-8-20 14:37:52
 * @LastEditors: chenzhifeng
 * @LastEditTime: 2021-8-7 17:39:51
 */
/**
 * UUID(Universally Unique IDentifier) 全局唯一标识符。
 * UUID是一种由算法生成的二进制长度为128位的数字标识符。
 * UUID的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”，其中的 x 是 0-9 或 a-f 范围内的一个32位十六进制数。
 * 在理想情况下，任何计算机和计算机集群都不会生成两个相同的UUID。
 */
export const createUUID = () => {
  let s = []
  const hexDigits = '0123456789abcdef'
  for (let i = 0; i < 36; i++) {
    s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1)
  }
  s[14] = '4' // bits 12-15 of 时间和版本字段设置为0010
  s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1) // bits 6-7 of the clock_seq_hi_and_reserved to 01
  s[8] = s[13] = s[18] = s[23] = '-'

  const uuid = s.join('')
  return [uuid, uuid.replace(/-/g, '')] //0:保留-  1:去除-
}

/**
 * 测试用例
 * 将src/index.js底部执行函数:selectTest(params)的实参params改为 3
 * 直接无法测试，请使用npm run dev或者去掉 export 使用node运行当前界面测试即可
 */
console.log('测试生成UUID:', createUUID())
/* 
测试生成UUID: [
  'fa457b03-d391-4b0c-bc05-67dcba8927fb',
  'fa457b03d3914b0cbc0567dcba8927fb'
]
 */
